<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../css/reset.css">
    <script src="../js/vue.js"></script>
    <style>
        li {
            line-height: 40px;
            text-indent: 16px;
            border: 1px dashed #333;
        }

        .item {
            padding: 20px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div class="item">
            <h3>.lazy</h3>
            <p><input type="text" v-model.lazy="msg"></p>
            <p>msg:{{msg}}</p>
        </div>

        <div class="item">
            <h3>.number</h3>
            <p><input type="number" v-model.number="num"></p>
            <p>num:{{num}}----{{typeof num}}</p>
        </div>


        <div class="item">
            <h3>.trim</h3>
            <p><input type="text" v-model.trim="content"></p>
            <p>content:{{content}}</p>
        </div>


    </div>
</body>
<script>
    // v-model  双向数据绑定(常用于表单元素 / 组件)


    // 你可以用 v-model 指令在表单 <input>、<textarea> 及 <select> 元素上创建双向数据绑定。
    // 它会根据控件类型自动选取正确的方法来更新元素

    // v-model 在内部为不同的输入元素使用不同的 property(属性) 并抛出不同的事件：
    //     text 和 textarea 元素使用 value property(属性) 和 input 事件；
    //     checkbox 和 radio 使用 checked property(属性) 和 change 事件；
    //     select 字段将 value 作为 prop 并将 change 作为事件。

    // .lazy
    // 在默认情况下，v - model 在每次 input 事件触发后将输入框的值与数据进行同步(除了上述输入法组合文字时)。你可以添加 lazy 修饰符，从而转为在 change 事件_之后_进行同步：

    // .number
    // 如果想自动将用户的输入值转为数值类型，可以给 v - model 添加 number 修饰符：

    // .trim
    // 如果要自动过滤用户输入的首尾空白字符，可以给 v - model 添加 trim 修饰符：

    var app = new Vue({
        el: "#app",
        data: {
            msg: "123",
            num: 0,
            content: ""
        },
        // 数据监听 -> 监听data中某个属性的值是否发生改变, 如果改变就触发对于的回调函数1
        watch: {
            content: function (newVal, oldVal) {
                console.log(1, "content改变了", newVal);
            }
        }
    })


</script>

</html>